package com.gph.saviorframework.fastdfs.monitor.service;

import java.util.List;
import java.util.Map;

/**
 * 给应用系统使用的文件服务接口
 * @author guopeihui
 */
public interface DfsFileService {

    /**
     * 上传文件
     * @param groupName 组名
     * @param bs 文件byte数组
     * @param fileLength 文件长度
     * @param fileName 文件名
     * @param ip 上传文件的ip地址
     * @return
     */
    String uploadFile(String groupName,byte[] bs,long fileLength,String fileName,String ip);

    /**
     * 上传文件
     * @param groupName 组名
     * @param bs 文件字节数组
     * @param fileName 原始文件名
     * @param ip 上传的ip
     * @return
     */
    String uploadFile(String groupName,byte[] bs,String fileName,String ip);

    /**
     * 上传文件，groupname由fastdfs自行选择
     * @param bs
     * @param fileLength
     * @param fileExtension
     * @return
     */
    String uploadFile(byte[] bs,long fileLength,String fileExtension,String ip);

    /**
     * 上传文件
     * @param bs
     * @param fileName
     * @param ip
     * @return
     */
    String uploadFile(byte[] bs,String fileName,String ip);

    /**
     * 更具fdfs的相对路径删除文件
     * @param path 格式为group1/M00/00/00/wKgBbVdxReKAGcvBAAE4E08WEfw817.jpg
     */
    void deleteFile(String path);

    /**
     * 根据groupname和filepath删除文件
     * @param groupName 例如group1
     * @param filePath 格式为M00/00/00/wKgBbVdxReKAGcvBAAE4E08WEfw817.jpg
     */
    void deleteFile(String groupName,String filePath);

    /**
     * 下载文件
     * @param path 格式为group1/M00/00/00/wKgBbVdxReKAGcvBAAE4E08WEfw817.jpg
     */
    byte[] downloadFile(String path);

    /**
     * 下载文件
     * @param groupName 例如group1
     * @param path 格式为M00/00/00/wKgBbVdxReKAGcvBAAE4E08WEfw817.jpg
     * @return
     */
    byte[] downloadFile(String groupName,String path);

    /**
     * 获取所有上传文件
     * @param sort
     * @param dir
     * @return
     */
    List<Map<String,Object>> find(String sort,String dir);

    /**
     * 获取所有上传文件,分页获取
     * @param start
     * @param limit
     * @param sort
     * @param dir
     * @return
     */
    Map<String,Object> find(int start,int limit,String sort,String dir);
}
